/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：BaseDialog.js<br>
 * 日期：2017年7月18日<br>
 * 作者: 杨顺强<br>
 * 功能：实验结果分析对话框基类<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 * 
 ******************************************************************************/
window.makeNamespace(window,"Rainier.UI.V2");

Rainier.UI.V2.AnalysisBaseDialog = Rainier.UI.V2.BaseDialog.extend({
	
	NAME : 'com.rainier.application.AnalysisBaseDialog',

	init : function(dialogProperties){
		if(!dialogProperties){
			throw new Error("dialogProperties参数不能为空，是创建dialog的必备条件，请检测并重新赋值！！！");
		}
		var appCtx            = window.app.getContext();
		this.context          = appCtx.getActiveEditor().context;
		var circuitParser     = this.context.getCircuitParser();
		if(!circuitParser){
			throw new Error("circuitparser必须存在，请查看程序调用顺序，修改错误!!!");
		}

		this.circuitParser       = circuitParser;
		this.experimentConfig    = this.context.experimentConfig;
		this.initValuesMap       = {};
		this.componentsMap       = {};
		this._super(dialogProperties);
	},

	/**
	 * 函数名称：createDialogComponents<br>
	 * 函数功能：创建dialog组件内部的子组件对象<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	createDialogComponents : function(){
		//此处有子类实现
		throw new Error("该函数由子类来实现，请重新实现该函数！");
	},

	/**
	 * @名称   computeDialogParams
	 * @功能   完成dialog 组件需要显示数据的动态结算
	 * @author 杨顺强
	 * @data   2017-07-18
	 * @return {[type]}   [description]
	 */
	computeDialogParams : function(){
		throw new Error("该函数由子类来实现，请重新实现该函数！");
	},

	/**
	 * 函数名称：registerComponent<br>
	 * 函数功能：向对话框对象中注册组件对象，用于值的获取和修改<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	registerComponent : function(objs){
		$.extend(this.componentsMap,objs);
	},

	/**
	 * 函数名称：getComponentsValues<br>
	 * 函数功能：获取所有组件对象的value值<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	getComponentsValues : function(){
		var objValues = {};
		for(var componentsItem in this.componentsMap){
			var componentObj       = this.componentsMap[componentsItem];
			var componentValuesObj = componentObj.getComponentValueObj();
			$.extend(objValues,componentValuesObj);
		}
		return objValues;
	},

	/**
	 * 函数名称：getComponentsInitValues<br>
	 * 函数功能：获取所有组件对象的初始化值<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	getComponentsInitValues : function(){
		return this.initValuesMap;
	},

	/**
	 * 函数名称：resetComponentsValues<br>
	 * 函数功能：将所有组件的值置为默认值，此函数由子类自定义恢复相应的默认值即可，
	 * 			 并不需要所有的值都恢复默认值，故交由子类实现<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	resetComponentValues : function(){
		throw new Error("该函数由子类来实现，请重新实现该函数！");	
	},

	/**
	 * 函数名称：createDialogComponents<br>
	 * 函数功能：通过名字获取对话框中的响应组件<br>
	 * 参数输入：componentOptionName : 标识组件的optionName<br>
	 * 参数输出：无<br>
	 * 函数返回：组件对象<br>
	 * 异常信息：无<br>
	 */
	findComponentItemByOptionName : function(componentOptionName){
		var component;
		for(var optionName in this.componentsMap){
			if(optionName === componentOptionName){
				component = this.componentsMap[optionName];
				break;
			}
		}
		return component;
	},

	/**
	 * @名称   onClickConfirm
	 * @功能   点击确定按钮，完成相应操作，关闭对话框
	 * @author 杨顺强
	 * @data   2017-07-18
	 * @return {[type]}   [description]
	 */
	onClickConfirm : function(){
		this._super();
	},

	/**
	 * @名称   onClickCancel
	 * @功能   点击取消按钮，什么都不执行，关闭对话框
	 * @author 杨顺强
	 * @data   2017-07-18
	 * @return {[type]}   [description]
	 */
	onClickCancel : function(){
		this._super();
	},
});